package com.rskj.cashbook.dao;

import com.rskj.cashbook.vo.DictData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 字典数据DAO接口
 * @author fudaopin
 */
@Mapper
public interface DictDataDao {
    
    /**
     * 根据ID查询字典数据
     */
    DictData selectById(@Param("id") String id);
    
    /**
     * 根据类型ID查询字典数据
     */
    List<DictData> selectByTypeId(@Param("typeId") String typeId);
    
    /**
     * 根据类型编码查询字典数据
     */
    List<DictData> selectByTypeCode(@Param("typeCode") String typeCode);
    
    /**
     * 根据类型ID查询启用的字典数据
     */
    List<DictData> selectEnabledByTypeId(@Param("typeId") String typeId);
    
    /**
     * 根据类型编码查询启用的字典数据
     */
    List<DictData> selectEnabledByTypeCode(@Param("typeCode") String typeCode);
    
    /**
     * 根据编码查询字典数据
     */
    DictData selectByCode(@Param("code") String code);
    
    /**
     * 根据值查询字典数据
     */
    DictData selectByValue(@Param("value") String value);
    
    /**
     * 插入字典数据
     */
    int insert(DictData dictData);
    
    /**
     * 更新字典数据
     */
    int update(DictData dictData);
    
    /**
     * 根据ID删除字典数据
     */
    int deleteById(@Param("id") String id);
    
    /**
     * 根据类型ID删除字典数据
     */
    int deleteByTypeId(@Param("typeId") String typeId);
    
    /**
     * 检查编码是否存在
     */
    int countByCode(@Param("code") String code);
    
    /**
     * 根据类型ID检查编码是否存在
     */
    int countByTypeIdAndCode(@Param("typeId") String typeId, @Param("code") String code);
}
